export function isExternal(path: string) {
  return /^(https?:|mailto:|tel:)/.test(path);
}

export function toggleThemeColorClass(element: HTMLElement, className: string) {
  if (!element || !className) {
    return;
  }
  let classString = element.className;
  const clazz = classString
    .split(" ")
    .filter((it) => it.indexOf("theme_") === -1);
  clazz.push(className);
  classString = clazz.join(" ");
  element.className = classString;
}

export function toggleThemeClass(element: HTMLElement, className: string) {
  if (!element || !className) {
    return;
  }
  let classString = element.className;
  const clazz = classString
    .split(" ")
    .filter((it) => it.indexOf("theme_") !== -1);
  clazz.push(className);
  classString = clazz.join(" ");
  element.className = classString;
}

/**
 * 中划线字符驼峰
 * @param {*} str 要转换的字符串
 * @returns 返回值
 */
export function toHump(str: string) {
  if (!str) return str;
  return str
    .replace(/-(\w)/g, function (all, letter) {
      return letter.toUpperCase();
    })
    .replace(/(\s|^)[a-z]/g, function (char) {
      return char.toUpperCase();
    });
}

import path from "path-browserify";
import { RouteRecordRaw } from "vue-router";

export function mapTwoLevelRouter(srcRoutes: Array<RouteRecordRaw>) {
  function addParentRoute(
    routes: Array<RouteRecordRaw>,
    parent: Array<RouteRecordRaw>,
    parentPath: string
  ) {
    routes.forEach((it) => {
      if (!isExternal(it.path)) {
        it.path = path.resolve(parentPath, it.path);
      }
      parent.push(it);
      if (it.children && it.children.length > 0) {
        addParentRoute(it.children, parent, it.path);
      }
    });
  }
  if (srcRoutes && srcRoutes.length > 0) {
    const tempRoutes: Array<RouteRecordRaw> = [];
    srcRoutes.forEach((it) => {
      const route = { ...it };
      const parentRoutes: Array<RouteRecordRaw> = [];
      if (route.children && route.children.length > 0) {
        addParentRoute(route.children, parentRoutes, route.path);
      }
      parentRoutes &&
        parentRoutes.length > 0 &&
        (route.children = parentRoutes);
      tempRoutes.push(route);
    });
    return tempRoutes;
  }
  return [];
}
